Міністерство освіти і науки України
Національний університет «Львівська політехніка»
Кафедра ЕОМ
/
Звіт
до лабораторної роботи № 7
з дисципліни «Основи алгоритмізації та програмування, частина 1» на тему: «Розв'язування на С задач, які використовують файли для вводу та виводу даних»
Варіант № 23
2016
Мета: познайомитися iз засобами файлового вводу та виводу в мовi програмування С.
Завдання:
1)
/
2)
/
3)
/.
Небхідно написати два варіанти програми:
• програма у якій ввід здійснюється з текстового файлу і вивід виконується в текстовий файл;
• програма у якій ввід здійснюється з бінарного файлу і вивід відбувається в бінарний файл.
У бінарному файлі дані зберігаються у внутрішньому представлені.
Для варіанту, який використовує бінарні файли, необхідно написати дві допоміжні програми:
• допоміжну програму яка формує бінарний файл із вхідними даними;
• допоміжну програму яка читає вихідний бінарний файл і виводить на екран монітори вихідні дані.
Хід виконання роботи
Познайомитися зі засобами вводу з файлів та виводу у файл в мові програмування С.
Підготувати тексти програм, у яких використовуються функції роботи з файлами, відлагодити їх та отримати результати роботи програм.
Виконати індивідуальне завдання:
1)
а) Код програми
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <locale.h>
#include <math.h>
#include <conio.h>
int sign(int a)
{
if (a < 0)
{
return -1;
}
else if (a == 0)
{
return 0;
}
else
{
return 1;
}
}
int main()
{
int x, y;
float z = 0;
FILE *input;
FILE *output;
input = fopen("input.txt", "rt");
if (input == NULL)
{
printf ("Error");
}
fscanf_s(input, "%d %d", &x, &y);
fclose(input);
output = fopen("output.txt", "wt");
z = z+ (sign(x) + sign(y) * sqrt(x*sign(x)) + sqrt(y*sign(y) ) );
fprintf(output, "z=%5.2f\n", z);
fclose(output);
return 0;
}
/
Рис.1. - Результат виконання програми.
б) Код програми
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <locale.h>
#include <math.h>
#include <conio.h>
int sign(int a)
{
if (a < 0)
{
return -1;
}
else if (a == 0)
{
return 0;
}
else
{
return 1;
}
}
int main()
{
int x, y, z;
FILE *input;
FILE *output;
input = fopen("input.bin", "rt");
if (input == NULL)
{
printf("Error\n");
return 0;
}
fscanf_s(input, "%d %d", &x, &y);
int v = 0, q = 0;
do
{
v = (int)v + (((int)x % (int)10)*((int)pow(2, (int)q)));
x = (x / 10);
q++;
} while (x != 0);
x = v;
int p = 0, g = 0;
do
{
p = (int)p + (((int)y % (int)10)*((int)pow(2, (int)g)));
y = (y / 10);
g++;
} while (y != 0);
y = p;
fclose(input);
output = fopen("output.bin", "wt");
z = (sign(x) + sign(y) * sqrt(x*sign(x)) + sqrt(y*sign(y)));
int u, s[64];
for (u = 0; u < 64; u++)
{
s[u] = 0;
}
u = 0;
while (z != 0)
{
if (z % 2 == 0)
{
s[u] = 0;
z = z / 2;
}
else
{
s[u] = 1;
z = z / 2;
}
u++;
}
u = u - 1;
fprintf(output, "z=");
for (; u >= 0; u--)
fprintf(output, "%d", s[u]);
fclose(output);
return 0;
}
/
Рис.2. - Результат виконання програми.
2)
а) Код програми
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <locale.h>
#include <math.h>
#include <conio.h>
#include <stdlib.h>
int main()
{
int left, right, newLeft, newRight;
int i;
FILE *input;
FILE *output;
input = fopen("input.txt", "rb");
if (input == NULL)
{
printf("Error\n");
return 0;
}
fscanf_s(input, "%d\n %d\n", &left, &right);
fscanf_s(input, "%d\n %d\n", &newLeft, &newRight);
fclose(input);
output = fopen("output.txt", "wb");
for (int i = 0; i < 1; i++)
{left = max(left, newLeft);
right = min(right, newRight);
}
if (left >= right)
{
printf(" No intersection");
}
else
printf("left%d right %d", left, right);
return 0;
}
/
Рис.3. - Результат виконання програми.
б) Код програм...